Labour market


Labour force
url <- paste0("https://bank.stat.gl/api/v1/", language, "/Greenland/AR/AR10/ARXSTK2.px")

ARXSTK2_raw <- 
  url |> 
  statgl_fetch(
    time                 = px_top(),
    education            = c("AA", "10", "20", "30", "40", "50"),
    "inventory variable" = px_all(),
    .col_code            = TRUE
  ) %>% 
  as_tibble()

ARXSTK2 <-
  ARXSTK2_raw %>% 
  mutate(
    education = education %>% factor(levels = unique(education)),
    `inventory variable` = `inventory variable` %>% fct_rev()
  ) %>% 
  spread(education, value)


ARXSTK2 %>% 
  select(-time) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXSTK2[["time"]] %>% table()) |> 
  row_spec(1, bold = T)
Total Primary Upper secondary education - General Upper secondary education - Vocational: Total Post-secondary non-tertiary education Bachelors, Masters, Doctoral or equivalent level
2022
Unemployment in average per month 931 776 14 108 15 17
Total population 37.038 20.503 2.036 8.068 1.449 4.982
Persons not in the labour force in average per month 8.231 6.232 481 1.017 187 314
Labour force in average per month 28.808 14.272 1.555 7.051 1.262 4.668
Employment in average per month 27.877 13.495 1.542 6.943 1.246 4.651


See the table in our Statbank: ARXSTK2

Jobseekers


ARXLED2_raw <- 
  statgl_url("ARXLED2", lang = language) %>%
  statgl_fetch(
    aar       = px_top(2),
    md        = px_all(),
    koen      = 3,
    type_k    = "A",
    alderskat = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXLED2 <- 
  ARXLED2_raw %>% 
  filter(aar <= Sys.time() %>% year() - 1) %>% 
  mutate(
    alderskat = alderskat %>% factor(levels = unique(alderskat)),
    md = md %>% factor(levels = unique(md))
  ) %>% 
  spread(md, value) %>% 
  unite(combi, type_k, koen, sep = ", ")

ARXLED2 %>% 
  select(-c(aar, combi)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXLED2[["aar"]] %>% table())
January February March April May June July August September October November December
2023
18-19 68 60 68 53 49 53 42 32 29 34 47 60
20-24 183 134 172 145 118 124 117 96 87 105 133 141
25-29 209 168 159 139 117 111 116 100 85 100 124 141
30-34 242 200 214 185 151 146 139 121 109 122 141 173
35-39 194 168 154 136 124 119 115 103 101 102 121 148
40-44 163 156 138 115 120 103 109 96 97 100 120 128
45-49 128 109 120 97 88 75 70 68 63 74 84 97
50-54 174 147 156 134 111 112 111 97 85 94 102 113
55-59 240 193 203 203 207 176 156 155 152 149 193 224
60+ 208 181 198 190 176 149 141 139 140 145 169 175


See the table in our Statbank: ARXLED2

ARXLEDVAR_raw <- 
  statgl_url("ARXLEDVAR", lang = language) %>%
  statgl_fetch(
    gender               = 0,
    age                  = "A",
    "inventory variable" = px_all(),
    time                 = px_top(1),
    "number of months"   = px_all(),
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXLEDVAR <- 
  ARXLEDVAR_raw %>% 
  unite(combi, age, gender, sep = ", ") %>% 
  mutate(
    `number of months` = `number of months` %>% fct_inorder(),
    `inventory variable` = `inventory variable` %>% fct_inorder()
  ) %>% 
  spread(`inventory variable`, value)

ARXLEDVAR %>% 
  select(-c(combi, time)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXLEDVAR[["time"]] %>% table()) %>% 
  row_spec(1, bold = TRUE)
Number of persons Percentage
2023Q4
Total 4.479 100,0
1-3 months 2.948 65,8
4-6 months 844 18,8
7-9 months 345 7,7
10-12 months 342 7,6


See the table in our Statbank: ARXSTK1

Employment
url <- paste0("https://bank.stat.gl/api/v1/", language, "/Greenland/AR/AR30/ARXBFB01.px")

ARXBFB1_raw <- 
  url |> 
  statgl_fetch(
    time                 = px_top(),
    industry             = px_all(),
    gender               = "A",
    "inventory variable" = "G",
    "place of residence" = px_all(),
    .col_code            = TRUE
  ) %>% 
  as_tibble()

ARXBFB1 <- 
  ARXBFB1_raw %>% 
  arrange(-value) %>% 
  mutate(
    industry = industry %>% fct_inorder(),
    `place of residence` = `place of residence` %>% fct_inorder()
  ) %>% 
  spread(`place of residence`, value) %>% 
  unite(combi, `inventory variable`, time, sep = ", ")

ARXBFB1 %>% 
  select(-c(combi, gender)) %>% 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  pack_rows(index = ARXBFB1[["combi"]] %>% table()) %>% 
  row_spec(1, bold = TRUE) 
Total Towns Settlements etc.
Number of main employed persons in average per month, 2022
All industries 28.992 25.493 3.499
Public administration and service 12.873 11.540 1.333
Fishing and other related industries 4.343 3.125 1.218
Wholesale and retail trade 3.075 2.702 373
Construction 2.308 2.258 50
Transportation and storage 2.043 1.807 236
Accommodation and food service activities 829 794 34
Unknown 594 558 36
Information and communication 563 555 8
Energy and watersupply 417 326 91
Administrative and support service activities 401 338 63
Other service industries 318 316 3
Real estate activities 298 292 5
Professional, scientific and technical activities 298 296 2
Manufacturing 228 225 2
Financial and insurance activities 201 201 NA
Mining and quarrying 106 98 8
Agriculture, forestry and related industries 98 62 36


See the table in our Statbank: ARXBFB01

Unemployment
url <- paste0("https://bank.stat.gl/api/v1/", language, "/Greenland/AR/AR40/ARXLED6.px")

ARXLED6_raw <- 
  url |> 
  statgl_fetch(
    time      = px_top(5),
    education = px_all(),
    "inventory variable" = "P",
    .col_code = TRUE
  ) %>% 
  as_tibble()

ARXLED6_raw %>% 
  mutate(
    education = education %>% fct_inorder(),
    time = time %>% fct_inorder()
  ) %>% 
  spread(time, value) %>%
  select(-`inventory variable`) |> 
  rename(" " = 1) %>% 
  statgl_table() %>% 
  row_spec(1, bold = TRUE) |> 
  add_footnote(ARXLED6_raw[[3]][1], notation = "symbol")
2018 2019 2020 2021 2022
Total 5,0 4,3 4,5 3,7 3,2
Primary 8,1 7,1 7,5 6,2 5,4
Upper secondary education - General 1,9 1,4 1,4 0,9 0,9
Upper secondary education - Vocational: Total 2,4 2,1 2,3 1,8 1,5
Upper secondary education - Vocational: Arts and humanities 4,2 2,6 3,4 2,8 2,0
Upper secondary education - Vocational: Business, administration and law 1,1 0,9 1,5 1,3 1,0
Upper secondary education - Vocational: Engineering, manufacturing and construction 2,1 1,8 1,9 1,6 1,6
Upper secondary education - Vocational: Agriculture, forestry, fisheries and veterinary 5,3 6,1 6,5 5,2 4,1
Upper secondary education - Vocational: Health and welfare 1,9 1,6 1,7 1,4 1,1
Upper secondary education - Vocational: Services 3,6 3,0 3,2 2,1 1,8
Upper secondary education - Vocational: Other 0,9 1,2 1,5 0,7 0,1
Post-secondary non-tertiary education 1,8 1,7 1,9 1,3 1,2
Bachelors, Masters, Doctoral or equivalent level 0,4 0,4 0,4 0,3 0,4
* Unemployment rate (pct.)


See the table in our Statbank: ARXLED7


Last updated: 17. april 2024
LS0tDQpwYXJhbXM6DQogIGxhbmc6ICJkYSINCm91dHB1dDoNCiAgc3RhdGdsOjpzdGF0Z2xfcmVwb3J0Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCmVkaXRvcl9vcHRpb25zOiANCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGNvbnNvbGUNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KA0KCWVjaG8gICAgPSBUUlVFLA0KCW1lc3NhZ2UgPSBGQUxTRSwNCgl3YXJuaW5nID0gRkFMU0UsDQoJY2xhc3Mub3V0cHV0ID0gInNjcm9sbC0xMDAiDQopDQoNCmxpYnJhcnkoInRpZHl2ZXJzZSIpDQpsaWJyYXJ5KCJzdGF0Z2wiKQ0KbGlicmFyeSgia2FibGVFeHRyYSIpDQpsaWJyYXJ5KCJsdWJyaWRhdGUiKQ0KbGlicmFyeSgieWFtbCIpDQoNCmxhbmd1YWdlICA8LSBwYXJhbXMkbGFuZw0Kb3B0aW9uICAgIDwtIHBhc3RlMCgiP2xhbmc9IiwgbGFuZ3VhZ2UsICImc2VsZWN0IikNCmxvZ28gICAgICA8LSBwYXN0ZTAoZ2V0d2QoKSwiL2FkZC9sb2dvLmdpZiIpDQp0eHQgICAgICAgPC0gcmVhZF95YW1sKHBhc3RlMChnZXR3ZCgpLCAiL2FkZC90eHQueW1sIiksIGZpbGVFbmNvZGluZyA9ICJJU08tODg1OS0xIikNCnNvdXJjZSAgICA8LSB0eHQkc291cmNlW2xhbmd1YWdlXSAlPiUgdW5saXN0KCkNCg0KeGFyaW5nYW5FeHRyYTo6dXNlX2NsaXBib2FyZCgpDQoNCmBgYA0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQoNCi5hY2NvcmRpb24gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTE5OTAwOw0KICBjb2xvcjogd2hpdGU7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgcGFkZGluZzogMThweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJvcmRlcjogbm9uZTsNCiAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICB0ZXh0LWFsaWduOiBsZWZ0Ow0KICBvdXRsaW5lOiBub25lOw0KICBmb250LXNpemU6IDE1cHg7DQogIHRyYW5zaXRpb246IDAuNHM7DQp9DQoNCi5hY3RpdmUsIC5hY2NvcmRpb246aG92ZXIgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjk3MjQyOw0KfQ0KDQouYWNjb3JkaW9uOmFmdGVyIHsNCiAgY29udGVudDogJ1wwMDJCJzsNCiAgY29sb3I6ICM3Nzc7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmbG9hdDogcmlnaHQ7DQogIG1hcmdpbi1sZWZ0OiA1cHg7DQp9DQoNCi5hY3RpdmU6YWZ0ZXIgew0KICBjb250ZW50OiAiXDIyMTIiOw0KfQ0KDQoucGFuZWwgew0KICBwYWRkaW5nOiAwcHggNXB4IDBweCA1cHg7DQogIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KICBtYXgtaGVpZ2h0OiAwOw0KICBvdmVyZmxvdzogaGlkZGVuOw0KICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZS1vdXQ7DQp9DQoNCmRldGFpbHMgew0KICB3aWR0aDogMTAwJTsNCn0NCg0KZGV0YWlscyA+IHN1bW1hcnkgew0KICBwYWRkaW5nOiA0cHggMTJweDsNCiAgd2lkdGg6IDEwMCU7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMDdmOTk7DQogIGJvcmRlcjogc29saWQ7DQogIGJvcmRlci1jb2xvcjogd2hpdGU7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBmb250LXNpemU6IDE1cHg7DQogIGNvbG9yOiB3aGl0ZTsNCn0NCg0KZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnkgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFhNDFhOw0KfQ0KDQoNCi50aXRsZSB7DQogIGNvbG9yOiAjMWI1NDYzOw0KICBmb250LXNpemU6IDM2cHg7DQp9DQoNCg0KLnBlcnNvbmVyIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDQ0NTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDAuMXB4Ow0KICBwYWRkaW5nLWJvdHRvbTogMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLsO4a29ub21pIHsNCiAgYm94LXNoYWRvdzogM3B4IDNweCA0cHggYmxhY2s7DQogIGJhY2tncm91bmQ6ICMwMDdGOTk7DQogIHBhZGRpbmctcmlnaHQ6IDE1cHg7DQogIHBhZGRpbmctbGVmdDogMTZweDsNCiAgcGFkZGluZy10b3A6IDFweDsNCiAgcGFkZGluZy1ib3R0b206IDAuMXB4Ow0KICBmb250LXNpemU6IDExcHg7DQogIGNvbG9yOiB3aGl0ZTsNCiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLnR2w6ZyZ8OlZW5kZSB7DQogIGJveC1zaGFkb3c6IDNweCAzcHggNHB4IGJsYWNrOw0KICBiYWNrZ3JvdW5kOiAjZmFhNDFhOw0KICBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICBwYWRkaW5nLWxlZnQ6IDE2cHg7DQogIHBhZGRpbmctdG9wOiAwLjFweDsNCiAgcGFkZGluZy1ib3R0b206IDFweDsNCiAgZm9udC1zaXplOiAxMXB4Ow0KICBjb2xvcjogd2hpdGU7DQogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi5jb250YWluZXIgew0KICB3aWR0aDogaW5oZXJpdDsNCn0NCg0KLnNjcm9sbC0xMDAgew0KICBtYXgtaGVpZ2h0OiAxMDA7DQogIG92ZXJmbG93LXk6IGF1dG87DQogIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7DQp9DQoNCg0KcHJlIHsNCiAgbWF4LWhlaWdodDogMzAwcHg7DQogIG92ZXJmbG93LXk6IGF1dG87DQp9DQoNCnByZVtjbGFzc10gew0KICBtYXgtaGVpZ2h0OiAzMDBweDsNCn0NCg0KYGBgDQoNCjxicj4NCjxicj4NCg0KPGNlbnRlcj4NCg0KLS0tDQogDQojIFtgciB0eHQkQVIkdGl0bGVbbGFuZ3VhZ2VdYF17LnRpdGxlfQ0KIA0KLS0tDQo8L2NlbnRlcj4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkQVIkc3ViMVtsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciBwYXN0ZTAoIioqVGFiZWwgMTogKioiLCBzdGF0Z2xfbWV0YShzdGF0Z2xfdXJsKCJBUlhTVEsyIiwgbGFuZyA9IGxhbmd1YWdlKSlbMV0kdGl0bGUpIGAgPC9idXR0b24+IDxkaXYgY2xhc3M9InBhbmVsIj4NCg0KYGBge3IgQVJYU1RLMn0NCg0KdXJsIDwtIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2wvYXBpL3YxLyIsIGxhbmd1YWdlLCAiL0dyZWVubGFuZC9BUi9BUjEwL0FSWFNUSzIucHgiKQ0KDQpBUlhTVEsyX3JhdyA8LSANCiAgdXJsIHw+IA0KICBzdGF0Z2xfZmV0Y2goDQogICAgdGltZSAgICAgICAgICAgICAgICAgPSBweF90b3AoKSwNCiAgICBlZHVjYXRpb24gICAgICAgICAgICA9IGMoIkFBIiwgIjEwIiwgIjIwIiwgIjMwIiwgIjQwIiwgIjUwIiksDQogICAgImludmVudG9yeSB2YXJpYWJsZSIgPSBweF9hbGwoKSwNCiAgICAuY29sX2NvZGUgICAgICAgICAgICA9IFRSVUUNCiAgKSAlPiUgDQogIGFzX3RpYmJsZSgpDQoNCkFSWFNUSzIgPC0NCiAgQVJYU1RLMl9yYXcgJT4lIA0KICBtdXRhdGUoDQogICAgZWR1Y2F0aW9uID0gZWR1Y2F0aW9uICU+JSBmYWN0b3IobGV2ZWxzID0gdW5pcXVlKGVkdWNhdGlvbikpLA0KICAgIGBpbnZlbnRvcnkgdmFyaWFibGVgID0gYGludmVudG9yeSB2YXJpYWJsZWAgJT4lIGZjdF9yZXYoKQ0KICApICU+JSANCiAgc3ByZWFkKGVkdWNhdGlvbiwgdmFsdWUpDQoNCg0KQVJYU1RLMiAlPiUgDQogIHNlbGVjdCgtdGltZSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IEFSWFNUSzJbWyJ0aW1lIl1dICU+JSB0YWJsZSgpKSB8PiANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFQpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiQVJYU1RLMiIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvYzM5ZGI2YjItOTNjZC00NjY5LThmYWQtZGFkMTZkOGEwZWExIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkQVIkc3ViMltsYW5ndWFnZV1gIDwvc3VtbWFyeT4NCjxicj4NCg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDI6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiQVJYTEVEMiIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIEFSWExFRDJ9DQoNCkFSWExFRDJfcmF3IDwtIA0KICBzdGF0Z2xfdXJsKCJBUlhMRUQyIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUNCiAgc3RhdGdsX2ZldGNoKA0KICAgIGFhciAgICAgICA9IHB4X3RvcCgyKSwNCiAgICBtZCAgICAgICAgPSBweF9hbGwoKSwNCiAgICBrb2VuICAgICAgPSAzLA0KICAgIHR5cGVfayAgICA9ICJBIiwNCiAgICBhbGRlcnNrYXQgPSBweF9hbGwoKSwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQpBUlhMRUQyIDwtIA0KICBBUlhMRUQyX3JhdyAlPiUgDQogIGZpbHRlcihhYXIgPD0gU3lzLnRpbWUoKSAlPiUgeWVhcigpIC0gMSkgJT4lIA0KICBtdXRhdGUoDQogICAgYWxkZXJza2F0ID0gYWxkZXJza2F0ICU+JSBmYWN0b3IobGV2ZWxzID0gdW5pcXVlKGFsZGVyc2thdCkpLA0KICAgIG1kID0gbWQgJT4lIGZhY3RvcihsZXZlbHMgPSB1bmlxdWUobWQpKQ0KICApICU+JSANCiAgc3ByZWFkKG1kLCB2YWx1ZSkgJT4lIA0KICB1bml0ZShjb21iaSwgdHlwZV9rLCBrb2VuLCBzZXAgPSAiLCAiKQ0KDQpBUlhMRUQyICU+JSANCiAgc2VsZWN0KC1jKGFhciwgY29tYmkpKSAlPiUgDQogIHJlbmFtZSgiICIgPSAxKSAlPiUgDQogIHN0YXRnbF90YWJsZSgpICU+JSANCiAgcGFja19yb3dzKGluZGV4ID0gQVJYTEVEMltbImFhciJdXSAlPiUgdGFibGUoKSkNCg0KYGBgDQo8YnI+DQpbIVtdKGByIGxvZ29gKXt3aWR0aD00MH1gciBwYXN0ZShzb3VyY2UsICJBUlhMRUQyIilgXShgciBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsOjQ0My9zcS84ZGMyYzIxZC04M2MzLTQ2OWYtYTdhMS05ZWFhM2Y5ZTE5OTEiLCBvcHRpb24pYCl7dGFyZ2V0PSJfYmxhbmsifQ0KPC9kaXY+IA0KDQoNCjxidXR0b24gY2xhc3M9ImFjY29yZGlvbiI+IGByIHBhc3RlMCgiKipUYWJlbCAzOiAqKiIsIHN0YXRnbF9tZXRhKHN0YXRnbF91cmwoIkFSWExFRFZBUiIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIEFSWExFRFZBUn0NCg0KQVJYTEVEVkFSX3JhdyA8LSANCiAgc3RhdGdsX3VybCgiQVJYTEVEVkFSIiwgbGFuZyA9IGxhbmd1YWdlKSAlPiUNCiAgc3RhdGdsX2ZldGNoKA0KICAgIGdlbmRlciAgICAgICAgICAgICAgID0gMCwNCiAgICBhZ2UgICAgICAgICAgICAgICAgICA9ICJBIiwNCiAgICAiaW52ZW50b3J5IHZhcmlhYmxlIiA9IHB4X2FsbCgpLA0KICAgIHRpbWUgICAgICAgICAgICAgICAgID0gcHhfdG9wKDEpLA0KICAgICJudW1iZXIgb2YgbW9udGhzIiAgID0gcHhfYWxsKCksDQogICAgLmNvbF9jb2RlID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KQVJYTEVEVkFSIDwtIA0KICBBUlhMRURWQVJfcmF3ICU+JSANCiAgdW5pdGUoY29tYmksIGFnZSwgZ2VuZGVyLCBzZXAgPSAiLCAiKSAlPiUgDQogIG11dGF0ZSgNCiAgICBgbnVtYmVyIG9mIG1vbnRoc2AgPSBgbnVtYmVyIG9mIG1vbnRoc2AgJT4lIGZjdF9pbm9yZGVyKCksDQogICAgYGludmVudG9yeSB2YXJpYWJsZWAgPSBgaW52ZW50b3J5IHZhcmlhYmxlYCAlPiUgZmN0X2lub3JkZXIoKQ0KICApICU+JSANCiAgc3ByZWFkKGBpbnZlbnRvcnkgdmFyaWFibGVgLCB2YWx1ZSkNCg0KQVJYTEVEVkFSICU+JSANCiAgc2VsZWN0KC1jKGNvbWJpLCB0aW1lKSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IEFSWExFRFZBUltbInRpbWUiXV0gJT4lIHRhYmxlKCkpICU+JSANCiAgcm93X3NwZWMoMSwgYm9sZCA9IFRSVUUpDQoNCg0KDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiQVJYU1RLMSIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvNzUyNDRhNDktZmMyOS00Y2JhLTk0MWEtOTBlZTQ2NjNhYzQ3Iiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4NCg0KPGRldGFpbHM+IDxzdW1tYXJ5PiBgciB0eHQkQVIkc3ViM1tsYW5ndWFnZV1gIDwvc3VtbWFyeT4gDQo8YnI+DQo8YnV0dG9uIGNsYXNzPSJhY2NvcmRpb24iPiBgciAnKlRhYmVsIDQ6KiB7c3RhdGdsX21ldGEoZ2x1ZTo6Z2x1ZSgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2wvYXBpL3YxL3tsYW5ndWFnZX0vR3JlZW5sYW5kL0FSL0FSMzAvQVJYQkZCMDEucHgiKSkgfD4gcGx1Y2soInRpdGxlIil9JyB8PiBnbHVlOjpnbHVlKCkgYCA8L2J1dHRvbj4gPGRpdiBjbGFzcz0icGFuZWwiPg0KDQpgYGB7ciBBUlhCRkIwMX0NCg0KdXJsIDwtIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2wvYXBpL3YxLyIsIGxhbmd1YWdlLCAiL0dyZWVubGFuZC9BUi9BUjMwL0FSWEJGQjAxLnB4IikNCg0KQVJYQkZCMV9yYXcgPC0gDQogIHVybCB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHRpbWUgICAgICAgICAgICAgICAgID0gcHhfdG9wKCksDQogICAgaW5kdXN0cnkgICAgICAgICAgICAgPSBweF9hbGwoKSwNCiAgICBnZW5kZXIgICAgICAgICAgICAgICA9ICJBIiwNCiAgICAiaW52ZW50b3J5IHZhcmlhYmxlIiA9ICJHIiwNCiAgICAicGxhY2Ugb2YgcmVzaWRlbmNlIiA9IHB4X2FsbCgpLA0KICAgIC5jb2xfY29kZSAgICAgICAgICAgID0gVFJVRQ0KICApICU+JSANCiAgYXNfdGliYmxlKCkNCg0KQVJYQkZCMSA8LSANCiAgQVJYQkZCMV9yYXcgJT4lIA0KICBhcnJhbmdlKC12YWx1ZSkgJT4lIA0KICBtdXRhdGUoDQogICAgaW5kdXN0cnkgPSBpbmR1c3RyeSAlPiUgZmN0X2lub3JkZXIoKSwNCiAgICBgcGxhY2Ugb2YgcmVzaWRlbmNlYCA9IGBwbGFjZSBvZiByZXNpZGVuY2VgICU+JSBmY3RfaW5vcmRlcigpDQogICkgJT4lIA0KICBzcHJlYWQoYHBsYWNlIG9mIHJlc2lkZW5jZWAsIHZhbHVlKSAlPiUgDQogIHVuaXRlKGNvbWJpLCBgaW52ZW50b3J5IHZhcmlhYmxlYCwgdGltZSwgc2VwID0gIiwgIikNCg0KQVJYQkZCMSAlPiUgDQogIHNlbGVjdCgtYyhjb21iaSwgZ2VuZGVyKSkgJT4lIA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHBhY2tfcm93cyhpbmRleCA9IEFSWEJGQjFbWyJjb21iaSJdXSAlPiUgdGFibGUoKSkgJT4lIA0KICByb3dfc3BlYygxLCBib2xkID0gVFJVRSkgDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiQVJYQkZCMDEiKWBdKGByIHBhc3RlMCgiaHR0cHM6Ly9iYW5rLnN0YXQuZ2w6NDQzL3NxLzAxYWY1OTM0LWU5YWItNGU3MS05MGVhLTVmMDgwYzE0YmFjMiIsIG9wdGlvbilgKXt0YXJnZXQ9Il9ibGFuayJ9DQo8L2Rpdj4gDQo8L2RldGFpbHM+IA0KDQo8ZGV0YWlscz4gPHN1bW1hcnk+IGByIHR4dCRBUiRzdWI0W2xhbmd1YWdlXWAgPC9zdW1tYXJ5Pg0KPGJyPg0KPGJ1dHRvbiBjbGFzcz0iYWNjb3JkaW9uIj4gYHIgcGFzdGUwKCIqKlRhYmVsIDU6ICoqIiwgc3RhdGdsX21ldGEoc3RhdGdsX3VybCgiQVJYTEVENiIsIGxhbmcgPSBsYW5ndWFnZSkpWzFdJHRpdGxlKSBgIDwvYnV0dG9uPiA8ZGl2IGNsYXNzPSJwYW5lbCI+DQoNCmBgYHtyIEFSWExFRDZ9DQoNCnVybCA8LSBwYXN0ZTAoImh0dHBzOi8vYmFuay5zdGF0LmdsL2FwaS92MS8iLCBsYW5ndWFnZSwgIi9HcmVlbmxhbmQvQVIvQVI0MC9BUlhMRUQ2LnB4IikNCg0KQVJYTEVENl9yYXcgPC0gDQogIHVybCB8PiANCiAgc3RhdGdsX2ZldGNoKA0KICAgIHRpbWUgICAgICA9IHB4X3RvcCg1KSwNCiAgICBlZHVjYXRpb24gPSBweF9hbGwoKSwNCiAgICAiaW52ZW50b3J5IHZhcmlhYmxlIiA9ICJQIiwNCiAgICAuY29sX2NvZGUgPSBUUlVFDQogICkgJT4lIA0KICBhc190aWJibGUoKQ0KDQpBUlhMRUQ2X3JhdyAlPiUgDQogIG11dGF0ZSgNCiAgICBlZHVjYXRpb24gPSBlZHVjYXRpb24gJT4lIGZjdF9pbm9yZGVyKCksDQogICAgdGltZSA9IHRpbWUgJT4lIGZjdF9pbm9yZGVyKCkNCiAgKSAlPiUgDQogIHNwcmVhZCh0aW1lLCB2YWx1ZSkgJT4lDQogIHNlbGVjdCgtYGludmVudG9yeSB2YXJpYWJsZWApIHw+IA0KICByZW5hbWUoIiAiID0gMSkgJT4lIA0KICBzdGF0Z2xfdGFibGUoKSAlPiUgDQogIHJvd19zcGVjKDEsIGJvbGQgPSBUUlVFKSB8PiANCiAgYWRkX2Zvb3Rub3RlKEFSWExFRDZfcmF3W1szXV1bMV0sIG5vdGF0aW9uID0gInN5bWJvbCIpDQoNCmBgYA0KPGJyPg0KWyFbXShgciBsb2dvYCl7d2lkdGg9NDB9YHIgcGFzdGUoc291cmNlLCAiQVJYTEVENyIpYF0oYHIgcGFzdGUwKCJodHRwczovL2Jhbmsuc3RhdC5nbDo0NDMvc3EvZmNhOWEzMjYtZDYwZS00OWE3LTgwY2EtZGI0MWUxNzdiZGUyIiwgb3B0aW9uKWApe3RhcmdldD0iX2JsYW5rIn0NCjwvZGl2PiANCjwvZGV0YWlscz4gDQoNCg0KDQo8aHIgc3R5bGU9ImJvcmRlcjoxcHggcmlkZ2UgbGlnaHRncmF5Ij4gPC9ocj4NCjxjZW50ZXI+IDxzcGFuIHN0eWxlPSdjb2xvcjojRDNEM0QzOyBmb250LXNpemU6OTAlOyc+IGByIHBhc3RlKHR4dCR1cGRhdGVbbGFuZ3VhZ2VdLCBmb3JtYXQoU3lzLkRhdGUoKSwgIiVkLiAlQiAlWSIpKWAgPC9zcGFuPiA8L2NlbnRlcj4NCg0KDQoNCg0KPHNjcmlwdD4NCnZhciBhY2MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhY2NvcmRpb24iKTsNCnZhciBpOw0KDQpmb3IgKGkgPSAwOyBpIDwgYWNjLmxlbmd0aDsgaSsrKSB7DQogIGFjY1tpXS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgew0KICAgIHRoaXMuY2xhc3NMaXN0LnRvZ2dsZSgiYWN0aXZlIik7DQogICAgdmFyIHBhbmVsID0gdGhpcy5uZXh0RWxlbWVudFNpYmxpbmc7DQogICAgaWYgKHBhbmVsLnN0eWxlLm1heEhlaWdodCkgew0KICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gbnVsbDsNCiAgICB9IGVsc2Ugew0KICAgICAgcGFuZWwuc3R5bGUubWF4SGVpZ2h0ID0gcGFuZWwuc2Nyb2xsSGVpZ2h0ICsgInB4IjsNCiAgICB9IA0KICB9KTsNCn0NCjwvc2NyaXB0Pg0KDQoNCg==